;(assert(osoba(nazwa taxiDriver)(koszt 0)(szybkosc 50)(bezpieczenstwo 60)(wygoda 60)(pojazd_mechaniczny tak)(rodzaj_pojazdu samochod)))
;(assert(osoba(nazwa taxiPassenger)(koszt 6)(szybkosc 50)(bezpieczenstwo 60)(wygoda 60)(pojazd_mechaniczny nie)(rodzaj_pojazdu brak)))

(deftemplate statystyki_taxi_driver
	(slot cena_za_km(type FLOAT))  
	(slot cena_startowa(type FLOAT))
	(slot ilosc_km(type FLOAT))
	(slot stan_kasy(type FLOAT))
)

;(assert(statystyki_taxi_driver (cena_za_km 6.50)(cena_startowa 6.0)(ilosc_km 12.3)))
(deftemplate driver
	(slot czy_uprzejmy)  
	(slot doswiadczenie)	
)

(deftemplate auto
	(slot marka)
	(slot spalanie_na_100(type FLOAT))
	(slot stan_techniczny (allowed-values dobry przecietny beznadziejny) (default przecietny))
	(slot poziom_baku(type FLOAT))
)
(deftemplate koszt_przejazdu
	(slot ile_km(type FLOAT))
	(slot cena(type FLOAT))
)
(deftemplate akcja_kierowcy
	(slot typ_akcji))

;(deffacts akcje_kierowcy
;	(akcja_kierowcy (typ_akcji jedzie))
;	(akcja_kierowcy (typ_akcji pobiera_kase))
;	(akcja_kierowcy (typ_akcji kasuje_licznik))
;)



;(assert(koszt_przejazdu (ile_km 20.8)(cena 20.9)))


(defrule sprawdz_warunki_taxi2
	?o <- (osoba (rodzaj_pojazdu samochod) (szybkosc ?szybkosc) (bezpieczenstwo ?bp))
	(pogoda (typ zwykla))	
	=>
	(if(< ?szybkosc 50)
		then
		(modify ?o(szybkosc 50))		
	)	
)

(defrule sprawdz_poziom_baku
	?o <- (osoba (nazwa ?na) (pojazd_mechaniczny tak) (rodzaj_pojazdu samochod))
	(auto (poziom_baku ?pb))
	?ak <-(akcja_kierowcy (typ_akcji ?tp))
	=>
	(if(< ?pb 10.0)
		then
		(if (= (str-compare ?tp "jazda") 0)
		then
		(modify ?ak(typ_akcji tankowanie))
)
	)
)
(defrule change_akcja1
	?ak <- (akcja_kierowcy (typ_akcji ?zl))
	?aut <- (auto (poziom_baku ?pb))
	?who <- (osoba (rodzaj_pojazdu samochod) (szybkosc ?szybk));(polaczenie (skad 4) (dokad 7))
	?kasa <- (statystyki_taxi_driver (stan_kasy ?kk))
	=>
	(if (= (str-compare ?zl "tankowanie") 0)
	then
		(modify ?who(szybkosc 50))
		(modify ?ak(typ_akcji jazda))
		(modify ?aut(poziom_baku 100.0))		
	
	
))

